Method and system for transferring replicated information from source storage to destination storage

ABSTRACT

Machine implemented method and system for transferring replicated information from a first storage location managed by a storage operating system at a first storage system node and accessible to a client computing system to a second storage location managed by a second storage system node are provided. A resource pool having a plurality of tokens is maintained for authorizing a replication engine to transfer replicated information from the first storage location to the second storage location. The number of available tokens is increased when traffic due to client requests for accessing the first storage location is less than a first threshold level. The number of available tokens is decreased for reducing transfer of information via the replication engine, when latency in responding to the client requests reaches a second threshold value and the traffic due to client requests reaches the first threshold value.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending application Ser. No.13/550,860, filed On Jul. 17, 2012, the disclosure of which isincorporated herein by reference in its entirety.

TECHNICAL FIELD

The present disclosure relates to storage systems and more particularlyto data replication of storage devices within the storage systems.

RELATED ART

A storage system typically comprises one or more storage devices whereinformation may be stored and from where information may be retrieved,as desired. The storage system may be implemented in accordance with avariety of storage architectures including, but not limited to, anetwork-attached storage (NAS) environment, a storage area network (SAN)and a storage device assembly directly attached to a client or hostcomputer.

The storage system typically includes a storage operating system thatmay implement a high-level module, such as a file system, to logicallyorganize information stored at storage volumes as a hierarchicalstructure of data containers, such as files and logical units. Forexample, stored files may be implemented as set of data structures,i.e., storage device blocks, configured to store information, such asthe actual data for the file. These data blocks are organized within avolume block number (vbn) space that is maintained by the file system.The file system typically organizes the data blocks within the vbn spaceas a “logical volume”; each logical volume may be, although is notnecessarily, associated with its own file system.

The storage system may be configured to operate according to a clientserver model of information delivery to thereby allow many clients toaccess data containers stored on the system. In this model, the clientmay comprise an application, such as a database application, executingin a computer that communicates with the storage system. Each client maysend input/output (“I/O”) requests to read and write data containers.

A storage volume is commonly replicated at a source storage array andthen transferred to a destination storage array. Transferring thereplicated information can negatively affect processing of client I/Orequests for reading and writing information at the storage arraysbecause during the transfer process the storage arrays have to beaccessed and may not be fully available for processing client I/Orequests. Continuous efforts are being made to optimally provideredundancy where replicated information may be stored at more than onelocation without undesirably impacting the processing of read and writerequests.

SUMMARY

In one embodiment, a machine implemented method and system fortransferring replicated information from a first storage locationmanaged by a storage operating system at a first storage system node andaccessible to a client computing system to a second storage locationmanaged by a second storage system node are provided. A resource poolhaving a plurality of tokens is maintained for authorizing a replicationengine to transfer replicated information from the first storagelocation to the second storage location. The number of available tokensis increased by a first increment value when traffic due to clientrequests for accessing the first storage location is less than a firstthreshold level.

The number of available tokens may also be increased by a secondincrement value when traffic due to client requests reaches the firstthreshold value but the latency in processing the client requests isless than a second threshold value. The number of available tokens isdecreased for reducing transfer of information via the replicationengine, when latency in responding to the client requests has reachedthe second threshold value and the traffic due to client requests hasreached the first threshold value.

In another embodiment, a machine implemented method for transferringreplicated information from a first storage location managed by astorage operating system at a first storage system node and accessibleto a client computing system to a second storage location managed by asecond storage system node is provided. The method includes maintaininga resource pool having a plurality of tokens for authorizing areplication engine for transferring replicated information from thefirst storage location to the second storage location; and increasing anumber of available tokens for enabling the replication engine toincrease transfer of information when traffic due to client requests foraccessing the first storage location is less than a first thresholdlevel.

The method further includes decreasing the number of available tokensfor reducing transfer of information via the replication engine, whenlatency in responding to the client requests has reached a secondthreshold value and the traffic due to client requests has reached thefirst threshold value.

In yet another embodiment, a machine implemented method for transferringreplicated information from a first storage location managed by astorage operating system at a storage system node and accessible to aclient computing system to a second storage location is provided. Themethod includes maintaining a resource pool having a plurality of tokensfor authorizing a replication engine for transferring replicatedinformation from the first storage location to the second storagelocation; and increasing a number of available tokens by a firstincrement value for enabling the replication engine to increase transferof information when traffic due to client requests for accessing thefirst storage location is less than a first threshold level.

The method further includes increasing the number of available tokens bya second increment value for transfer of information via the replicationengine, when latency in responding to the client requests is less than asecond threshold value and the traffic due to client requests hasreached the first threshold value; and decreasing the number ofavailable tokens for reducing transfer of information via thereplication engine, when latency in responding to the client requestshas reached a second threshold value and the traffic due to clientrequests has reached the first threshold value.

This brief summary has been provided so that the nature of thisdisclosure may be understood quickly. A more complete understanding ofthe disclosure can be obtained by reference to the following detaileddescription of the various embodiments thereof in connection with theattached drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing features and other features will now be described withreference to the drawings of the various embodiments. In the drawings,the same components have the same reference numerals. The illustratedembodiments are intended to illustrate, but not to limit the presentdisclosure. The drawings include the following Figures:

FIG. 1A shows a block diagram of a clustered system using themethodology of the present disclosure;

FIG. 1B shows an example of transferring a snapshot from a source arrayto a destination array;

FIG. 1C shows an example of a system for managing transfer ofinformation from the source array to the destination array;

FIG. 1D shows a process flow diagram, according to one embodiment;

FIG. 2 shows an example of a node used by the system of FIG. 1A;

FIG. 3 shows an example of an operating system used according to oneembodiment of the present disclosure; and

FIG. 4 shows a block diagram of a system, using the methodology of thepresent disclosure.

DETAILED DESCRIPTION

As preliminary note, the terms “component”, “module”, “system,” and thelike as used herein are intended to refer to a computer-related entity,either software-executing general purpose processor, hardware, firmwareand a combination thereof. For example, a component may be, but is notlimited to being, a process running on a processor, a processor, anobject, an executable, a thread of execution, a program, and/or acomputer.

By way of illustration, both an application running on a server and theserver can be a component. One or more components may reside within aprocess and/or thread of execution, and a component may be localized onone computer and/or distributed between two or more computers. Also,these components can execute from various computer readable media havingvarious data structures stored thereon. The components may communicatevia local and/or remote processes such as in accordance with a signalhaving one or more data packets (e.g., data from one componentinteracting with another component in a local system, distributedsystem, and/or across a network such as the Internet with other systemsvia the signal).

Computer executable components can be stored, for example, onnon-transitory computer readable media including, but not limited to, anASIC (application specific integrated circuit), CD (compact disc), DVD(digital video disk), ROM (read only memory), floppy disk, hard disk,EEPROM (electrically erasable programmable read only memory), memorystick or any other storage device, in accordance with the claimedsubject matter.

In one embodiment, a machine implemented method and system fortransferring replicated information from a first storage locationmanaged by a storage operating system at a first storage system node andaccessible to a client computing system to a second storage locationmanaged by a second storage system node are provided. A resource poolhaving a plurality of tokens is maintained for authorizing a replicationengine to transfer replicated information from the first storagelocation to the second storage location. The number of available tokensis increased by a first increment value when traffic due to clientrequests for accessing the first storage location is less than a firstthreshold level. The number of available tokens may also be increased bya second increment value when traffic due to client requests reaches thefirst threshold value but the latency in processing the client requestsis less than a second threshold value. As an example, the secondincrement value may be less than the first increment value. The numberof available tokens is decreased for reducing transfer of informationvia the replication engine, when latency in responding to the clientrequests reaches the second threshold value and the traffic due toclient requests has reached the first threshold value.

To facilitate an understanding of the various embodiments of the presentdisclosure, the general architecture and operation of a networked,clustered storage system will now be described.

Clustered System: FIG. 1A is a schematic block diagram of a plurality ofstorage system nodes 102 interconnected as a cluster 100 and configuredto provide storage services related to organization of information at aplurality of storage devices 108. Nodes 102 interface with variousclient computing systems 114 for reading and writing information storedat storage devices 108 managed by the nodes 102.

Nodes 102 comprise various functional components that cooperate toprovide distributed storage system architecture of cluster 100. Eachnode 102 is generally organized as a network element (N-module 104) anda storage device element (D-module 106). N-module 104 includesfunctionality that enables node 102 to connect to client computingsystems 114 over a network connection 112, while each D-module 106connects to one or more storage devices, such as 108 or a storage array110 having a plurality of storage devices 108. Illustratively, network112 may be embodied as an Ethernet network, a Fibre Channel (FC) networkor any other network type. Nodes 102 may be interconnected by a clusterswitching fabric 116 which, in the illustrative embodiment, may beembodied as a Gigabit Ethernet switch or any other interconnect type.

It should be noted that while there is shown an equal number of N andD-modules in the illustrative cluster 100, there may be differingnumbers of N and/or D-modules in accordance with various embodiments ofthe present disclosure. For example, there may be a plurality ofN-modules and/or D-modules interconnected in a cluster configuration 100that does not reflect a one-to-one correspondence between the N andD-modules. As such, the description of a node 102 comprising oneN-module and one D-module should be taken as illustrative only.

Clients 114 may be general purpose computers having a plurality ofcomponents, as described below in detail with respect to FIG. 4. Thesecomponents may include a central processing unit (CPU), main memory, I/Odevices, and storage devices (for example, flash memory, hard drives andothers). The main memory may be coupled to the CPU via a system bus or alocal memory bus. The main memory may be used to provide the CPU accessto data and/or program information that is stored in main memory atexecution time. Typically, the main memory is composed of random accessmemory (RAM) circuits. A computer system with the CPU and main memory isoften referred to as a host system.

Clients 114 may be configured to interact with a node 102 in accordancewith a client/server model of information delivery. That is, each client114 may request the services of the node 102, and node 102 may returnthe results of the services requested by the client 114 over network112. Clients 114 may be configured to execute processor executableinstructions, shown as application 115 for reading and writinginformation at storage devices 108. Such application 115 may include adatabase application, a financial management system, an electronic mailapplication or any other application type.

Client 114 may issue packets using application 115 including file-basedaccess protocols, such as the Common Internet File System (“CIFS”)protocol or the Network File System (“NFS”) protocol, over theTransmission Control Protocol/Internet Protocol (“TCP/IP”) whenaccessing information in the form of certain data containers.Alternatively, the client 114 may issue packets using application 115including block-based access protocols, such as the Small ComputerSystems Interface (“SCSI”) protocol encapsulated over TCP (“iSCSI”) andSCSI encapsulated over Fibre Channel (“FCP”), when accessing informationin the form of other data containers, such as blocks.

In one example, one or both of N-Module 104 and D-Module 106 execute aplurality of layers of a storage operating system (206, FIGS. 2 and 3).These layers include a file system manager that keeps track of adirectory structure (hierarchy) of the data stored in storage devices108 and manages read/write operations, i.e. executes read/writeoperations on storage devices in response to client 114 requests.

In cluster 100, for storing and retrieving information, it is sometimesadvantageous to duplicate all or part of a file system. For example, onepurpose for duplicating a file system is to maintain a backup copy ofthe file system to protect against lost information. Another purpose forduplicating a file system is to provide replicas of the data in the filesystem at multiple servers to share load incurred in accessing thatdata.

One common way of replicating a file system is by taking “snapshots”(without derogation of any trademark rights of NetApp Inc.), which meansa point in time copy of a storage file system. A snapshot is apersistent point in time (PPT) image of an active file system thatenables quick recovery of data after data has been corrupted, lost, oraltered. Snapshots can be created by copying data from a storage volumeat each predetermined point in time to form a consistent image, orvirtually by using a pointer to form the image of the data. Often,snapshot data is copied (or mirrored) from a source storage array to adestination storage array. Snapmirror technology from NetApp Inc. may beused to mirror snapshots from the source array to the destination array,as described below with respect to FIG. 1B.

FIG. 1B shows a source storage array 110A that may be used to store asnapshot of a storage volume. The source storage array 110A is managedby node 102A that provides access to storage array 110A to one or moreclient 114A. Node 102B manages a destination source storage array 110Bthat may be used to store a mirrored copy of the snapshot from sourcearray 110A.

In one embodiment, a block replication engine (BRE) 118 (shown as 118Afor node 102A and 118B for node 102B) may be used to transfer a snapshotfrom source array 110A to destination array 110B via a network link 119,which may be similar to the cluster switching fabric 116 or the networklink 112 described above. BRE 118 may use a generic file and/orblock-based “agnostic” protocol having a collection of methods/functionsconstituting an application programming interface (API) for transferringinformation from the source array 110A to the destination array 110B.Example of such an agnostic protocol is the SpinNP protocol availablefrom NetApp, Inc. The embodiments disclosed herein are not limited toany particular protocol/standard for transferring the information fromthe source array 110A to the destination array 110B.

One challenge for transferring information from the source array 110A tothe destination array 110B using BRE 118 is that it may negativelyimpact processing of client 114 requests for reading or writinginformation because BRE 118 gets access to storage devices 108 fortransferring information. The negative impact may be due to lower datatransfer to clients or delay (i.e. latency) in executing read and writeoperations. The embodiments disclosed herein provide an optimumsystem/methodology for handling client related operations as well asperforming transfer operations for transferring information from sourcearray 110A to destination array 110B.

FIG. 1C shows an example of a system executed by D-Module 106 forefficiently managing transfer from the source storage array 110A to thedestination storage array 110B, according to one embodiment. D-Module106 maintains a BRE resource pool 120 having a plurality of tokens120A-120N (shown as R1-RN), where N could be any number. In oneembodiment, a token is a data structure that includes a message datastructure which BRE 118 obtains to make a request to a storage array forreading or writing information. The message data structure may be usedto read information at source storage array 110A or write to thedestination storage array 110B. The total number of available tokens,i.e. 120A-120N at any given time may be limited by a maximum thresholdvalue. The maximum threshold value is an upper limit beyond which thesystem cannot allocate any more tokens to BRE 118. The tokens are anindicator or permission for BRE 118 to present to the storage operatingsystem 206 (FIG. 2) to access storage devices at the source array 110Aand/or destination array 110B for transferring information from thesource array 110A to the destination array 110B. If BRE 118 has more oftokens 120A-120N, then it means that it can transfer more informationcompared to when it has fewer tokens. In one embodiment, the processesand systems disclosed herein optimize allocation of tokens 120A-120N.

D-Module 106 executes a processor executable monitoring module 122 usinga data structure 124 having a plurality of fields 124A-124H. Theplurality of fields may be used to increase allocation of tokens120A-120N to BRE 118 or decrease allocation of tokens 120A-120N. Thevarious fields are now described below in detail:

Field 124A is based on an amount of traffic that is beinghandled/processed by node 102 at any given time interval (I) that isspecified by field 124G. Traffic in this context means requests fromclients 114 and/or other nodes within the cluster 100. The storageoperating system 206 maintains this data since it processes all read andwrite requests for one or more clients 114. The monitoring module 122obtains traffic information by periodically requesting that informationfrom storage operating system 206.

Field 124B is a measure of latency in processing client requestedoperations. Field 124B may be the queuing time a message from one of thelayers of storage operating system 206 has to wait to read or writeinformation. This duration is indicative of the overall latency at anode to process client requests. In one embodiment, monitoring module122 obtains this information from storage operating system 206 that maystore this information to track overall system efficiency in processingclient requests.

Field 124C is a first threshold value (T1) that may be programmed and isassociated with field 124A. If a number of client operations is lessthan T1, then it indicates that client traffic is low and hence thetokens allocated to BRE 118 from the BRE resource pool may beincremented by a certain value M1 that is indicated by field 124D.

Field 124E is a second threshold value (T2) that is associated withoverall latency as indicated by field 124B. T2 may be used as indicatorof low latency, which may be used to increase the number of allocatedtokens by an amount M2 as provided by field 124F. In one embodiment, M2may be less than M1 because it assumes that client operations are inprogress at any given time and by increasing M2 by a bigger value (forexample, greater than M1), it may cause more latency or delay inprocessing active client requests. The values for M1 and M2 may be setbased on the usage of storage system nodes 102 by clients 114 to storeinformation, for example, based on the amount of data that clientsstore, frequency of accessing storage system nodes, frequency ofreplicating information from the source storage array to the destinationstorage array and others. Thus M1 and M2 may be fixed or configured by astorage administrator (not shown) managing the system of FIG. 1A. Theuse of M2 and M1 values is described in more detail below.

Field 124H is a scaling (S) factor that is used to decrease the numberof tokens allocated to BRE 118, when latency is greater than T2. Thescaling factor may be based on a current average latency within theinterval I. As an example, assume that a latency value for processingclient requests is 100 millisecond, then using a scaling factor of 50%;the number of available tokens may be decreased by 50. In this example,the scaling factor is multiplied by the latency to determine the amountby which the number of tokens is decreased.

The scaling factor may be a fixed or configurable value. The scalingfactor value may be set based on the usage of storage system nodes 102by clients 114 to store information, for example, based on the amount ofdata that clients store, frequency of accessing storage system nodes,frequency of replicating information from the source storage array tothe destination storage array and others. This information is typicallymaintained by storage operating system 206.

The various fields' 124A-124H (or parameters) are selected such that adecrease in available tokens due to high latencies is greater than anincrease in available tokens when client traffic or latency is low. Thisallows a D-Module 106 to respond quickly to reduce latency if itsuddenly becomes high. When the latency drops, the increase in thenumber of tokens is gradual until the threshold value T2 is reached.This avoids unpredictable swings in overall performance of handlingclient requests.

In one embodiment, two separate token pools (120A-120N) may bemaintained at BRE resource pool 120. A first token pool is maintained toread information from the source storage array 110A and a second tokenpool may be used for writing to the destination array 110B. The scalingmechanism described below with respect to FIG. 1D may be the same forboth read and write operations, but the various parameters, for example,T1, T2, M1, M2 and S may be different for the read and write operations.

It is noteworthy that although the source and destination arrays in FIG.1B are shown as being managed by separate nodes 102A-102B, theembodiments disclosed herein are equally applicable to an architecturewhere both the source and destination arrays are managed by the samenode i.e. the source array 110A and the destination array 110B may bemanaged by a single node 102A and the data structures of FIG. 1C and theprocess flow described below in detail are applicable to thatarchitecture.

FIG. 1D shows a process 126 for optimizing use of BRE 118, according toone embodiment. The process begins in block B128. In block B130,monitoring module 122 collects client traffic information withininterval I. The traffic information is used to populate field 124A. Theaverage latency in processing read and write requests is determined inblock B132 to populate field 124B. In one embodiment, storage operatingsystem 206 maintains the information for determining latency since ithas to process read and write requests.

In block B134, the client traffic is compared to the first threshold T1.If the traffic is less than T1, then in block B136, the number ofallocated tokens for BRE 118 is increased by an amount M1.

If the traffic is greater than or equal to T1 (or has reached T1), thenin block B138, monitoring module 122 determines if the latency is lessthan the second threshold T2. If the latency is less than T2, then inblock B140, the number of tokens is increased by an amount M2. Asdescribed above, in one embodiment, M2 is less than M1. If the latencyis greater than or equal to T2 (i.e. has reached T2), then in blockB142, the number of tokens is decreased by using the scaling factor Sthat may be fixed value or a dynamic value based on the overall storageenvironment, as explained above.

The system and processes described herein have advantages becausetransfer from the source array 110A to the destination array 110Bminimally affect client operations or delay client operationsnegatively. The frequent monitoring is self-adjusting and henceautomatic.

Storage System Node: FIG. 2 is a block diagram of a node 102 that isillustratively embodied as a storage system comprising of a plurality ofprocessors 202A-202B, a memory 204, a network adapter 210, a clusteraccess adapter 212, a storage adapter 216 and local storage 213interconnected by an interconnect system (referred to as bus) 208. Thelocal storage 213 comprises one or more storage devices, such as disks,non-volatile storage devices, flash drives, video tape, optical, DVD,magnetic tape, bubble memory, electronic random access memory,micro-electro mechanical and any other similar media adapted to storeinformation. The local storage 213 may be utilized by the node tolocally store configuration information (e.g., in a configuration datastructure 214).

Processors 202A/202B may be, or may include, one or more programmablegeneral-purpose or special-purpose microprocessors, digital signalprocessors (DSPs), programmable controllers, application specificintegrated circuits (ASICs), programmable logic devices (PLDs), or thelike, or a combination of such hardware based devices. The bus system208 may include, for example, a system bus, a Peripheral ComponentInterconnect (PCI) bus, a HyperTransport or industry standardarchitecture (ISA) bus, a small computer system interface (SCSI) bus, auniversal serial bus (USB), or an Institute of Electrical andElectronics Engineers (IEEE) standard 1394 bus (sometimes referred to as“Firewire”) or any other interconnect type.

The cluster access adapter 212 comprises a plurality of ports adapted tocouple node 102 to other nodes of cluster 100. In the illustrativeembodiment, Ethernet may be used as the clustering protocol andinterconnect media, although it will be apparent to those skilled in theart that other types of protocols and interconnects may be utilizedwithin the cluster architecture described herein. In alternateembodiments where the N-modules and D-modules are implemented onseparate storage systems or computers, the cluster access adapter 212 isutilized by the N/D-module for communicating with other N/D-modules inthe cluster 100.

The network adapter 210 comprises a plurality of ports adapted to couplethe node 102 to one or more clients 114 over point-to-point links, widearea networks, virtual private networks implemented over a publicnetwork (Internet) or a shared local area network. The network adapter210 thus may comprise the mechanical, electrical and signaling circuitryneeded to connect the node to the network.

The storage adapter 216 cooperates with a storage operating system 206executing on the node 102 to access information requested by theclients. The information may be stored on any type of attached array ofwritable storage device media such as video tape, optical, DVD, magnetictape, bubble memory, electronic random access memory, micro-electromechanical and any other similar media adapted to store information,including data and parity information. However, as illustrativelydescribed herein, the information is preferably stored on the storagedevices 108 of array 110 (FIG. 1A). The storage adapter 216 comprises aplurality of ports having input/output (I/O) interface circuitry thatcouples to the storage devices over an I/O interconnect arrangement,such as a conventional high-performance, FC link topology.

It is noteworthy that although various adapters (210, 212 and 216) havebeen shown as separate hardware based components, the embodimentsdisclosed herein are not limited to separate components. The embodimentsdisclosed herein may be implemented using a converged network adapter(CAN) that is capable of handling both network and storage protocols,for example, a Fibre Channel over Ethernet (FCoE) adapter.

Each node 102 is illustratively embodied as a multiple processor systemexecuting the storage operating system 206 that preferably implements ahigh-level module, such as a file system, to logically organize theinformation as a hierarchical structure of named directories, files andspecial types of files called virtual disks (hereinafter generally“blocks”) on storage devices 108. However, it will be apparent to thoseof ordinary skill in the art that the node 102 may alternativelycomprise a single or more than two processor systems. Illustratively,one processor 202A executes the functions of the N-module 104 on thenode, while the other processor 202B executes the functions of theD-module 106.

The memory 204 illustratively comprises storage locations that areaddressable by the processors and adapters for storing programmableinstructions and data structures. The processor and adapters may, inturn, comprise processing elements and/or logic circuitry configured toexecute the programmable instructions and manipulate the datastructures. It will be apparent to those skilled in the art that otherprocessing and memory means, including various computer readable media,may be used for storing and executing program instructions pertaining tothe disclosure described herein.

The storage operating system 206, portions of which is typicallyresident in memory and executed by the processing elements, functionallyorganizes the node 102 by, inter alia, invoking storage operations insupport of the storage service implemented by the node and maintainingclient traffic and latency information described above. An example ofoperating system 206 is the DATA ONTAP® (Registered trademark of NetApp,Inc.) operating system available from NetApp, Inc. that implements aWrite Anywhere File Layout (WAFL® (Registered trademark of NetApp,Inc.)) file system. However, it is expressly contemplated that anyappropriate storage operating system may be enhanced for use inaccordance with the inventive principles described herein. As such,where the term “ONTAP” is employed, it should be taken broadly to referto any storage operating system that is otherwise adaptable to theteachings disclosed herein.

Storage of information on each storage array 110 is preferablyimplemented as one or more storage volumes that comprise a collection ofphysical storage devices 108 cooperating to define an overall logicalarrangement of volume block number (vbn) space on the volume(s). Eachlogical volume is generally, although not necessarily, associated withits own file system. The storage devices 108 within a logicalvolume/file system are typically organized as one or more groups,wherein each group may be operated as a Redundant Array of Independent(or Inexpensive) Disks (RAID). Details regarding storage operatingsystem 206 are provided below with respect to FIG. 3.

Operating System: FIG. 3 illustrates a generic example of operatingsystem 206 executed by node 102, according to one embodiment of thepresent disclosure. Storage operating system 206 interfaces withmonitoring module 122 and BRE 118, stores client traffic information andlatency information. The traffic and latency information is provided tomonitoring module 122 for executing the process steps of FIG. 1D, asdescribed above. The BRE resource pool tokens are provided to BRE 118for transferring information, as described above in detail.

In one example, operating system 206 may include several modules, or“layers” executed by one or both of N-Module 104 and D-Module 106. Theselayers include a file system manager 302 that keeps track of a directorystructure (hierarchy) of the data stored in storage devices and managesread/write operations, i.e. executes read/write operations on storagedevices in response to client 114 requests. File system manager 302 mayalso maintain information regarding client traffic and latency that arethen used in the process flow of FIG. 1D, described above.

Operating system 206 may also include a protocol layer 304 and anassociated network access layer 308, to allow node 102 to communicateover a network with other systems, such as clients 114. Protocol layer304 may implement one or more of various higher-level network protocols,such as NFS, CIFS, Hypertext Transfer Protocol (HTTP), TCP/IP andothers.

Network access layer 308 may include one or more drivers, whichimplement one or more lower-level protocols to communicate over thenetwork, such as Ethernet. Interactions between clients 114 and massstorage devices 108 are illustrated schematically as a path, whichillustrates the flow of data through operating system 206.

The operating system 206 may also include a storage access layer 306 andan associated storage driver layer 310 to allow D-module 106 tocommunicate with a storage device. The storage access layer 306 mayimplement a higher-level disk storage protocol, such as RAID, while thestorage driver layer 310 may implement a lower-level storage deviceaccess protocol, such as FC or SCSI. In one embodiment, the storageaccess layer 306 may implement the RAID protocol, such as RAID-4 orRAID-DP™ (RAID double parity for data protection provided by NetApp Inc.the assignee of the present disclosure).

The file system 302 is illustratively a message-based system thatprovides logical volume management capabilities for use in access to theinformation stored on the storage devices, such as disks. The filesystem 302 illustratively may implement the write-anywhere file systemhaving an on-disk format representation that is block-based using, e.g.,4 kilobyte (KB) blocks and using index nodes (“inodes”) to identify datacontainers and data container attributes (such as creation time, accesspermissions, size and block location). The file system uses datacontainers to store meta-data describing the layout of its file system;these meta-data data containers include, among others, an inode datacontainer. A data container handle, i.e., an identifier that includes aninode number (inum), may be used to retrieve an inode from storagedevice.

Broadly stated, all inodes of the write-anywhere file system areorganized into the inode data container. A file system (fs) info blockspecifies the layout of information in the file system and includes aninode of a data container that includes all other inodes of the filesystem. Each logical volume (file system) has an fsinfo block that ispreferably stored at a fixed location within, e.g., a RAID group. Theinode of the inode data container may directly reference (point to) datablocks of the inode data container or may reference indirect blocks ofthe inode data container that, in turn, reference data blocks of theinode data container. Within each data block of the inode data containerare embedded inodes, each of which may reference indirect blocks that,in turn, reference data blocks of a data container.

Operationally, a request from the client 114 is forwarded as a packetover the computer network 112 and onto the node 102 where it is receivedat the network adapter 210. A network driver processes the packet and,if appropriate, passes it on to a network protocol and file access layerfor additional processing prior to forwarding to the write-anywhere filesystem 302. Here, the file system generates operations to load(retrieve) the requested data from storage device 108 if it is notresident “in core”, i.e., in memory 204.

If the information is not in memory, the file system 302 indexes intothe inode data container using the inode number (inum) to access anappropriate entry and retrieve a logical vbn. The file system thenpasses a message structure including the logical vbn to the RAID system;the logical vbn is mapped to a storage device identifier and storagedevice block number (storage device, dbn) and sent to an appropriatedriver (e.g., a SCSI driver (not shown)). The storage device driveraccesses the dbn from the specified storage device 108 and loads therequested data block(s) in memory for processing by the node. Uponcompletion of the request, the node (and operating system) returns areply to the client 114.

As described above, processing client requests need access to storagedevices 108. Access to storage devices 108 may not be fully availablewhen a replicated storage volume is transferred from a source array to adestination array. The embodiments described herein optimize thetransfer process without negatively impacting processing of clientrequests.

It should be noted that the software “path” through the operating systemlayers described above needed to perform data storage access for aclient request received at node 102 may alternatively be implemented inhardware. That is, in an alternate embodiment of the disclosure, thestorage access request data path may be implemented as logic circuitryembodied within a field programmable gate array (FPGA) or an ASIC. Thistype of hardware implementation increases the performance of the fileservice provided by node 102 in response to a file system request issuedby client 114.

As used herein, the term “storage operating system” generally refers tothe computer-executable code operable on a computer to perform a storagefunction that manages data access and may, in the case of a node 102,implement data access semantics of a general purpose operating system.The storage operating system can also be implemented as a microkernel,an application program operating over a general-purpose operatingsystem, such as UNIX® or Windows XP®, or as a general-purpose operatingsystem with configurable functionality, which is configured for storageapplications as described herein.

In addition, it will be understood to those skilled in the art that thedisclosure herein may apply to any type of special-purpose (e.g., fileserver, filer or storage serving appliance) or general-purpose computer,including a standalone computer or portion thereof, embodied as orincluding a storage system. Moreover, the teachings of this disclosurecan be adapted to a variety of storage system architectures including,but not limited to, a network-attached storage environment, a storagearea network and a disk assembly directly-attached to a client or hostcomputer. The term “storage system” should therefore be taken broadly toinclude such arrangements in addition to any subsystems configured toperform a storage function and associated with other equipment orsystems. It should be noted that while this description is written interms of a write any where file system, the teachings of the presentdisclosure may be utilized with any suitable file system, including awrite in place file system.

Processing System: FIG. 4 is a high-level block diagram showing anexample of the architecture of a processing system, at a high level, inwhich executable instructions as described above can be implemented. Theprocessing system 400 can represent clients 114 and other components.Note that certain standard and well-known components which are notgermane to the present disclosure are not shown in FIG. 4.

The processing system 400 includes one or more processors 402 and memory404, coupled to a bus system 405. The bus system 405 shown in FIG. 4 isan abstraction that represents any one or more separate physical busesand/or point-to-point connections, connected by appropriate bridges,adapters and/or controllers. The bus system 405, therefore, may include,for example, a system bus, a Peripheral Component Interconnect (PCI)bus, a HyperTransport or industry standard architecture (ISA) bus, asmall computer system interface (SCSI) bus, a universal serial bus(USB), or an Institute of Electrical and Electronics Engineers (IEEE)standard 1394 bus (sometimes referred to as “Firewire”).

The processors 402 are the central processing units (CPUs) of theprocessing system 400 and, thus, control its overall operation. Incertain embodiments, the processors 402 accomplish this by executingprogrammable instructions stored in memory 404. A processor 402 may be,or may include, one or more programmable general-purpose orspecial-purpose microprocessors, digital signal processors (DSPs),programmable controllers, application specific integrated circuits(ASICs), programmable logic devices (PLDs), or the like, or acombination of such devices.

Memory 404 represents any form of random access memory (RAM), read-onlymemory (ROM), flash memory, or the like, or a combination of suchdevices. Memory 404 includes the main memory of the processing system400. Instructions 406 which implements techniques introduced above mayreside in and may be executed (by processors 402) from memory 404.

Also connected to the processors 402 through the bus system 405 are oneor more internal mass storage devices 410, and a network adapter 412.Internal mass storage devices 410 may be or may include any conventionalmedium for storing large volumes of data in a non-volatile manner, suchas one or more magnetic or optical based disks. The network adapter 412provides the processing system 400 with the ability to communicate withremote devices (e.g., storage servers) over a network and may be, forexample, an Ethernet adapter, a FC adapter, or the like. The processingsystem 400 also includes one or more input/output (I/O) devices 408coupled to the bus system 405. The I/O devices 408 may include, forexample, a display device, a keyboard, a mouse, etc.

Cloud Computing: The system and techniques described above areapplicable and useful in the upcoming cloud computing environment. Cloudcomputing means computing capability that provides an abstractionbetween the computing resource and its underlying technical architecture(e.g., servers, storage, networks), enabling convenient, on-demandnetwork access to a shared pool of configurable computing resources thatcan be rapidly provisioned and released with minimal management effortor service provider interaction. The term “cloud” is intended to referto the Internet and cloud computing allows shared resources, forexample, software and information to be available, on-demand, like apublic utility.

Typical cloud computing providers deliver common business applicationsonline which are accessed from another web service or software like aweb browser, while the software and data are stored remotely on servers.The cloud computing architecture uses a layered approach for providingapplication services. A first layer is an application layer that isexecuted at client computers. In this example, the application allows aclient to access storage via a cloud.

After the application layer, is a cloud platform and cloudinfrastructure, followed by a “server” layer that includes hardware andcomputer software designed for cloud specific services. Detailsregarding these layers are not germane to the inventive embodiments.

Thus, a method and apparatus for optimizing information transfer from asource array to a destination array have been described. Note thatreferences throughout this specification to “one embodiment” or “anembodiment” mean that a particular feature, structure or characteristicdescribed in connection with the embodiment is included in at least oneembodiment of the present disclosure. Therefore, it is emphasized andshould be appreciated that two or more references to “an embodiment” or“one embodiment” or “an alternative embodiment” in various portions ofthis specification are not necessarily all referring to the sameembodiment. Furthermore, the particular features, structures orcharacteristics being referred to may be combined as suitable in one ormore embodiments of the disclosure, as will be recognized by those ofordinary skill in the art.

While the present disclosure is described above with respect to what iscurrently considered its preferred embodiments, it is to be understoodthat the disclosure is not limited to that described above. To thecontrary, the disclosure is intended to cover various modifications andequivalent arrangements within the spirit and scope of the appendedclaims.

What is claimed is:
 1. A machine implemented method, comprising:monitoring a number of input/output (I/O) requests that are beingprocessed by a storage system node during a time interval for readingand writing information at a source storage array and a latency inprocessing the I/O requests by the storage system node, where thelatency indicates a delay in processing the I/O requests; comparing thenumber of I/O requests with a first threshold value; increasing transferof replicated information from the source storage array to a destinationstorage array by a first value, when the number of I/O requests has notreached the first threshold value; comparing the latency with a secondthreshold value; and increasing transfer of the replicated informationfrom the source storage array to a destination storage array by a secondvalue that is less than the first value, when the latency has notreached the second threshold value.
 2. The method of claim 1, furthercomprising: decreasing transfer of replicated information when thelatency has reached the second threshold value and the number of I/Orequests has reached the first threshold value.
 3. The method of claim1, further comprising: maintaining a resource pool having a plurality oftokens for authorizing a replication engine at the storage system nodefor transferring the replicated information from the source storagearray to the destination storage array, wherein increasing a number ofavailable tokens increases transfer of replicated information anddecreasing the number of available tokens reduces transfer of replicatedinformation.
 4. The method of claim 1, wherein a processor executablemonitoring module at the storage system node maintains a data structurefor storing the first value and the second value used for increasingtransfer of the replicated information.
 5. The method of claim 4,wherein the data structure stores the first threshold value and thesecond threshold value.
 6. The method of claim 4, wherein the datastructure stores latency information and information regarding thenumber of I/O requests obtained from a storage operating system of thestorage system node.
 7. The method of claim 1, wherein the replicatedinformation is a point in time copy of a storage volume at the sourcestorage array.
 8. A machine readable, non-transitory, storage mediumstoring executable instructions, which when executed by a machine,causes the machine to perform a method, the method comprising:monitoring a number of input/output (I/O) requests that are beingprocessed by a storage system node during a time interval for readingand writing information at a source storage array and a latency inprocessing the I/O requests by the storage system node, where thelatency indicates a delay in processing the I/O requests; comparing thenumber of I/O requests with a first threshold value; increasing transferof replicated information from the source storage array to a destinationstorage array by a first value, when the number of I/O requests has notreached the first threshold value; comparing the latency with a secondthreshold value; and increasing transfer of the replicated informationfrom the source storage array to a destination storage array by a secondvalue that is less than the first value, when the latency has notreached the second threshold value.
 9. The storage medium of claim 8,the method further comprising: decreasing transfer of replicatedinformation when the latency has reached the second threshold value andthe number of I/O requests has reached the first threshold value. 10.The storage medium of claim 8, the method further comprising:maintaining a resource pool having a plurality of tokens for authorizinga replication engine at the storage system node for transferring thereplicated information from the source storage array to the destinationstorage array, wherein increasing a number of available tokens increasestransfer of replicated information and decreasing the number ofavailable tokens reduces transfer of replicated information.
 11. Thestorage medium of claim 8, wherein a processor executable monitoringmodule at the storage system node maintains a data structure for storingthe first value and the second value used for increasing transfer of thereplicated information.
 12. The storage medium of claim 11, wherein thedata structure stores the first threshold value and the second thresholdvalue.
 13. The storage medium of claim 8, wherein the data structurestores latency information and information regarding the number of I/Orequests obtained from a storage operating system of the storage systemnode.
 14. The storage medium of claim 8, wherein the replicatedinformation is a point in time copy of a storage volume at the sourcestorage array.
 15. A system, comprising: a memory with machine readablemedium comprising machine executable code having stored thereoninstructions; and a processor module coupled to the memory, theprocessor module configured to execute the machine executable code to:monitor a number of input/output (I/O) requests that are being processedby a storage system node during a time interval for reading and writinginformation at a source storage array and a latency in processing theI/O requests by the storage system node, where the latency indicates adelay in processing the I/O requests; compare the number of I/O requestswith a first threshold value; increase transfer of replicatedinformation from the source storage array to a destination storage arrayby a first value, when the number of I/O requests has not reached thefirst threshold value; compare the latency with a second thresholdvalue; and increase transfer of the replicated information from thesource storage array to a destination storage array by a second valuethat is less than the first value, when the latency has not reached thesecond threshold value.
 16. The system of claim 15, wherein the transferof replicated information is decreased when the latency has reached thesecond threshold value and the number of I/O requests has reached thefirst threshold value.
 17. The system of claim 15, wherein a resourcepool having a plurality of tokens for authorizing a replication engineat the storage system node for transferring the replicated informationfrom the source storage array to the destination storage array ismaintained.
 18. The system of claim 17, wherein increasing a number ofavailable tokens increases transfer of replicated information anddecreasing the number of available tokens reduces transfer of replicatedinformation.
 19. The system of claim 15, wherein a processor executablemonitoring module at the storage system node maintains a data structurefor storing the first value and the second value used for increasingtransfer of the replicated information.
 20. The system of claim 19,wherein the data structure stores the first threshold value and thesecond threshold value.
 21. The system of claim 19, wherein the datastructure stores latency information and information regarding thenumber of I/O requests obtained from a storage operating system of thestorage system node.
 22. The system of claim 15, wherein the replicatedinformation is a point in time copy of a storage volume at the sourcestorage array.